home *** CD-ROM | disk | FTP | other *** search
/ The CICA Windows Explosion! / The CICA Windows Explosion! - Disc 2.iso / nt / sp3_31.exe / UPDATE.INF < prev   
INI File  |  1994-10-04  |  44KB  |  1,337 lines

  1. ;
  2. ; KEYED SECTIONS.  These sections are provided for files where a selection
  3. ; is made from a set of files and the chosen one is copied under a generic
  4. ; name.  This can be used to update the hal.dll, ntoskrnl.exe, ntbootdd.sys,
  5. ; ntdetect.com.
  6. ;
  7.  
  8.  
  9. [FileKeyedClasses]
  10.     Hal            = hal.dll
  11.     Ntoskrnl       = ntoskrnl.exe
  12.     Ntdetect       = ntdetect.com
  13.  
  14. [FilesKeyedSections]
  15.     FilesHal       = $(STF_HALDEST)
  16.     FilesNtoskrnl  = $(STF_WINDOWSSYSPATH)
  17.     FilesNtdetect  = $(STF_OSLDEST)
  18.  
  19. [FilesHal]
  20.     HAL      = 1, HAL.DLL      , RENAME=$(NEWFILE)
  21.     HAL486C  = 1, HAL486C.DLL  , RENAME=$(NEWFILE)
  22.     HALAST   = 1, HALAST.DLL   , RENAME=$(NEWFILE)
  23.     HALCBUS  = 1, HALCBUS.DLL  , RENAME=$(NEWFILE)
  24.     HALMCA   = 1, HALMCA.DLL   , RENAME=$(NEWFILE)
  25.     HALNCR   = 1, HALNCR.DLL   , RENAME=$(NEWFILE)
  26.     HALOLI   = 1, HALOLI.DLL   , RENAME=$(NEWFILE)
  27.     HALSP    = 1, HALSP.DLL    , RENAME=$(NEWFILE)
  28.     HALWYSE7 = 1, HALWYSE7.DLL , RENAME=$(NEWFILE)
  29.  
  30. [FilesNtoskrnl]
  31.     NTKRNLMP = 1, NTKRNLMP.EXE , RENAME=$(NEWFILE)
  32.     NTOSKRNL = 1, NTOSKRNL.EXE , RENAME=$(NEWFILE)
  33.  
  34. [FilesNtdetect]
  35.     NTDETECT = 1, NTDETECT.COM , RENAME=$(NEWFILE)
  36.  
  37. [FileSections]
  38.     FilesPrimary        = C:
  39.     FilesOsLoader       = $(STF_OSLDEST)
  40.     FilesPal            = $(STF_HALDEST)
  41.     FilesWinnt          = $(STF_WINDOWSPATH)
  42.     FilesSystem32       = $(STF_WINDOWSSYSPATH)
  43.     FilesOs2Dll         = $(STF_WINDOWSSYSPATH)\os2\dll
  44.     FilesSystem         = $(STF_WINDOWSPATH)\system
  45.     FilesDrivers        = $(STF_WINDOWSSYSPATH)\drivers
  46.     FilesConfig         = $(STF_WINDOWSSYSPATH)\config
  47.     FilesWinspool       = $(STF_WINDOWSSYSPATH)\spool
  48.     FilesPrnDriver      = $(STF_WINDOWSSYSPATH)\spool\drivers\$(!STF_PRNPLATFORM)
  49.     FilesPrnProc        = $(STF_WINDOWSSYSPATH)\spool\prtprocs\$(!STF_PRNPLATFORM)
  50.     FilesDbgCom         = $(STF_WINDOWSPATH)\symbols\com
  51.     FilesDbgCpl         = $(STF_WINDOWSPATH)\symbols\cpl
  52.     FilesDbgDll         = $(STF_WINDOWSPATH)\symbols\dll
  53.     FilesDbgDrv         = $(STF_WINDOWSPATH)\symbols\drv
  54.     FilesDbgExe         = $(STF_WINDOWSPATH)\symbols\exe
  55.     FilesDbgScr         = $(STF_WINDOWSPATH)\symbols\scr
  56.     FilesDbgSys         = $(STF_WINDOWSPATH)\symbols\sys
  57.  
  58.  
  59. [FileSectionsCopyAlways]
  60.     FilesSystem32CopyAlways = $(STF_WINDOWSSYSPATH)
  61.     FilesOs2DllCopyAlways   = $(STF_WINDOWSSYSPATH)\os2\dll
  62.     FilesDriversCopyAlways  = $(STF_WINDOWSSYSPATH)\drivers
  63.  
  64. ;
  65. ; product specific sections
  66. ;
  67.  
  68. [FileSectionsWINNT]
  69.     FilesInfWinnt       = $(STF_WINDOWSSYSPATH)
  70.  
  71. [FileSectionsLANMANNT]
  72.     FilesInfLanmanNT    = $(STF_WINDOWSSYSPATH)
  73.  
  74. ;
  75. ; FilesPrimary only covers ntldr.  For ntbootddd, a keyed section needs to
  76. ; be created.  Only relevant for x86.
  77. ;
  78. [FilesPrimary]
  79. 1 = 2, NTLDR       , RENAME=$(NEWFILE)
  80.  
  81. [FilesOsLoader]
  82.  
  83. [FilesPal]
  84.  
  85. [FilesWinnt]
  86.  
  87. [FilesSystem32]
  88. 1 = 1, ACLCONV.EXE , RENAME=$(NEWFILE)
  89. 2 = 1, ALRSVC.DLL  , RENAME=$(NEWFILE)
  90. 3 = 2, ATI.DLL     , RENAME=$(NEWFILE)
  91. 4 = 2, ATSVC.EXE   , RENAME=$(NEWFILE)
  92. 5 = 2, AUTOCHK.EXE , RENAME=$(NEWFILE)
  93. 6 = 2, AUTOCONV.EXE, RENAME=$(NEWFILE)
  94. 7 = 2, BASESRV.DLL , RENAME=$(NEWFILE)
  95. 8 = 2, BROWSER.DLL , RENAME=$(NEWFILE)
  96. 9 = 2, CLIPBRD.EXE , RENAME=$(NEWFILE)
  97. 10 = 2, COMDLG32.DLL, RENAME=$(NEWFILE)
  98. 11 = 2, CSRSRV.DLL  , RENAME=$(NEWFILE)
  99. 12 = 2, DEMIL32.DLL , RENAME=$(NEWFILE)
  100. 13 = 2, DGCONFIG.DLL, RENAME=$(NEWFILE)
  101. 14 = 2, DLCAPI.DLL  , RENAME=$(NEWFILE)
  102. 15 = 2, DOSX.EXE    , RENAME=$(NEWFILE)
  103. 16 = 2, DRIVERS.DLL , RENAME=$(NEWFILE)
  104. 17 = 2, DRWTSN32.EXE, RENAME=$(NEWFILE)
  105. 18 = 2, EVENTLOG.EXE, RENAME=$(NEWFILE)
  106. 19 = 2, EVENTVWR.EXE, RENAME=$(NEWFILE)
  107. 20 = 2, FRAMEBUF.DLL, RENAME=$(NEWFILE)
  108. 21 = 2, FTPSVC.EXE  , RENAME=$(NEWFILE)
  109. 22 = 2, GDI.EXE     , RENAME=$(NEWFILE)
  110. 23 = 2, GDI32.DLL   , RENAME=$(NEWFILE)
  111. 24 = 2, HPMON.DLL   , RENAME=$(NEWFILE)
  112. 25 = 3, IFSUTIL.DLL , RENAME=$(NEWFILE)
  113. 26 = 3, IPXROUTE.EXE, RENAME=$(NEWFILE)
  114. 27 = 3, KB16.COM    , RENAME=$(NEWFILE)
  115. 28 = 3, KBDPO.DLL   , RENAME=$(NEWFILE)
  116. 29 = 3, KERNEL32.DLL, RENAME=$(NEWFILE)
  117. 30 = 3, KRNL386.EXE , RENAME=$(NEWFILE)
  118. 31 = 3, LMUICMN0.DLL, RENAME=$(NEWFILE)
  119. 32 = 3, LMUICMN1.DLL, RENAME=$(NEWFILE)
  120. 33 = 3, LOCALSPL.DLL, RENAME=$(NEWFILE)
  121. 34 = 3, LSASRV.DLL  , RENAME=$(NEWFILE)
  122. 35 = 3, LSASS.EXE   , RENAME=$(NEWFILE)
  123. 36 = 3, MGMTAPI.DLL , RENAME=$(NEWFILE)
  124. 37 = 3, MSPRIVS.DLL , RENAME=$(NEWFILE)
  125. 38 = 3, MSSCHD32.DLL, RENAME=$(NEWFILE)
  126. 39 = 3, MSV1_0.DLL  , RENAME=$(NEWFILE)
  127. 40 = 3, MUSRMGR.EXE , RENAME=$(NEWFILE)
  128. 41 = 3, NCPA.CPL    , RENAME=$(NEWFILE)
  129. 42 = 4, NETAPI32.DLL, RENAME=$(NEWFILE)
  130. 43 = 4, NETLOGON.DLL, RENAME=$(NEWFILE)
  131. 44 = 4, NETRAP.DLL  , RENAME=$(NEWFILE)
  132. 45 = 4, NTBACKUP.EXE, RENAME=$(NEWFILE)
  133. 46 = 4, NTDLL.DLL   , RENAME=$(NEWFILE)
  134. 47 = 4, NTVDM.EXE   , RENAME=$(NEWFILE)
  135. 48 = 4, NWLNKCFG.DLL, RENAME=$(NEWFILE)
  136. 49 = 4, NWLNKMSG.DLL, RENAME=$(NEWFILE)
  137. 50 = 4, NWLNKSVC.EXE, RENAME=$(NEWFILE)
  138. 51 = 4, NWNBLINK.DLL, RENAME=$(NEWFILE)
  139. 52 = 4, NWNBLINK.EXE, RENAME=$(NEWFILE)
  140. 53 = 5, OS2.EXE     , RENAME=$(NEWFILE)
  141. 54 = 5, OS2SRV.EXE  , RENAME=$(NEWFILE)
  142. 55 = 5, OS2SS.EXE   , RENAME=$(NEWFILE)
  143. 56 = 5, PERFCTRS.DLL, RENAME=$(NEWFILE)
  144. 57 = 5, PERFMON.EXE , RENAME=$(NEWFILE)
  145. 58 = 5, PORTUAS.EXE , RENAME=$(NEWFILE)
  146. 59 = 5, PROGMAN.EXE , RENAME=$(NEWFILE)
  147. 60 = 5, RASADMIN.EXE, RENAME=$(NEWFILE)
  148. 61 = 5, RASCAUTH.DLL, RENAME=$(NEWFILE)
  149. 62 = 5, RASGTWY.DLL , RENAME=$(NEWFILE)
  150. 63 = 5, REDIR.EXE   , RENAME=$(NEWFILE)
  151. 64 = 5, RPCLTC3.DLL , RENAME=$(NEWFILE)
  152. 65 = 5, RPCLTC6.DLL , RENAME=$(NEWFILE)
  153. 66 = 5, RPCRT4.DLL  , RENAME=$(NEWFILE)
  154. 67 = 5, S3.DLL      , RENAME=$(NEWFILE)
  155. 68 = 5, SAMLIB.DLL  , RENAME=$(NEWFILE)
  156. 69 = 5, SAMSRV.DLL  , RENAME=$(NEWFILE)
  157. 70 = 5, SCREG.EXE   , RENAME=$(NEWFILE)
  158. 71 = 5, SENDFL32.DLL, RENAME=$(NEWFILE)
  159. 72 = 5, SFMMON.DLL  , RENAME=$(NEWFILE)
  160. 73 = 5, SFMPRINT.EXE, RENAME=$(NEWFILE)
  161. 74 = 5, SFMSVC.EXE  , RENAME=$(NEWFILE)
  162. 75 = 5, SFMWSHAT.DLL, RENAME=$(NEWFILE)
  163. 76 = 5, SHELL32.DLL , RENAME=$(NEWFILE)
  164. 77 = 5, SNMP.EXE    , RENAME=$(NEWFILE)
  165. 78 = 5, SRVMGR.CPL  , RENAME=$(NEWFILE)
  166. 79 = 4, SRVMGR.EXE  , RENAME=$(NEWFILE)
  167. 80 = 4, SRVSVC.DLL  , RENAME=$(NEWFILE)
  168. 81 = 4, TCPIPSVC.DLL, RENAME=$(NEWFILE)
  169. 82 = 1, TELNET.DLL  , RENAME=$(NEWFILE)
  170. 83 = 6, TERMINAL.EXE, RENAME=$(NEWFILE)
  171. 84 = 6, UFAT.DLL    , RENAME=$(NEWFILE)
  172. 85 = 6, UHPFS.DLL   , RENAME=$(NEWFILE)
  173. 86 = 6, UNTFS.DLL   , RENAME=$(NEWFILE)
  174. 87 = 6, UPS.EXE     , RENAME=$(NEWFILE)
  175. 88 = 6, USER.EXE    , RENAME=$(NEWFILE)
  176. 89 = 6, USER32.DLL  , RENAME=$(NEWFILE)
  177. 90 = 6, USERINIT.EXE, RENAME=$(NEWFILE)
  178. 91 = 6, USRMGR.EXE  , RENAME=$(NEWFILE)
  179. 92 = 6, WIN32SPL.DLL, RENAME=$(NEWFILE)
  180. 93 = 6, WINDISK.EXE , RENAME=$(NEWFILE)
  181. 94 = 6, WINFILE.EXE , RENAME=$(NEWFILE)
  182. 95 = 6, WINLOGON.EXE, RENAME=$(NEWFILE)
  183. 96 = 6, WINMSD.EXE  , RENAME=$(NEWFILE)
  184. 97 = 6, WINMSDP.EXE , RENAME=$(NEWFILE)
  185. 98 = 6, WINSPOOL.DRV, RENAME=$(NEWFILE)
  186. 99 = 7, WINSRV.DLL  , RENAME=$(NEWFILE)
  187. 100 = 7, WINSTRM.DLL , RENAME=$(NEWFILE)
  188. 101 = 7, WINVER.EXE  , RENAME=$(NEWFILE)
  189. 102 = 7, WOW32.DLL   , RENAME=$(NEWFILE)
  190. 103 = 7, WSHNWLNK.DLL, RENAME=$(NEWFILE)
  191. 104 = 7, WSOCK32.DLL , RENAME=$(NEWFILE)
  192. 105 = 7, XACTSRV.DLL , RENAME=$(NEWFILE)
  193.  
  194. [FilesOs2Dll]
  195. 1 = 3, DOSCALLS.DLL, RENAME=$(NEWFILE)
  196.  
  197. [FilesSystem]
  198.  
  199. [FilesDrivers]
  200. 1 = 3, 4MMDAT.SYS  , RENAME=$(NEWFILE)
  201. 2 = 3, ABIOSDSK.SYS, RENAME=$(NEWFILE)
  202. 3 = 3, AFD.SYS     , RENAME=$(NEWFILE)
  203. 4 = 3, ARCHQIC.SYS , RENAME=$(NEWFILE)
  204. 5 = 5, ARROW.SYS   , RENAME=$(NEWFILE)
  205. 6 = 5, ASYNCMAC.SYS, RENAME=$(NEWFILE)
  206. 7 = 5, ATDISK.SYS  , RENAME=$(NEWFILE)
  207. 8 = 5, BROWSER.SYS , RENAME=$(NEWFILE)
  208. 9 = 6, CDFS.SYS    , RENAME=$(NEWFILE)
  209. 10 = 6, CPQARRAY.SYS, RENAME=$(NEWFILE)
  210. 11 = 6, DIGIFEP5.SYS, RENAME=$(NEWFILE)
  211. 12 = 6, DLC.SYS     , RENAME=$(NEWFILE)
  212. 13 = 6, DPTSCSI.SYS , RENAME=$(NEWFILE)
  213. 14 = 6, ELNK16.SYS  , RENAME=$(NEWFILE)
  214. 15 = 6, ELNK3.SYS   , RENAME=$(NEWFILE)
  215. 16 = 6, ELNKII.SYS  , RENAME=$(NEWFILE)
  216. 17 = 6, ELNKMC.SYS  , RENAME=$(NEWFILE)
  217. 18 = 6, EXABYTE1.SYS, RENAME=$(NEWFILE)
  218. 19 = 7, FASTFAT.SYS , RENAME=$(NEWFILE)
  219. 20 = 7, FD16_700.SYS, RENAME=$(NEWFILE)
  220. 21 = 7, FLOPPY.SYS  , RENAME=$(NEWFILE)
  221. 22 = 7, FTDISK.SYS  , RENAME=$(NEWFILE)
  222. 23 = 7, I8042PRT.SYS, RENAME=$(NEWFILE)
  223. 24 = 7, IBMTOK.SYS  , RENAME=$(NEWFILE)
  224. 25 = 7, LANCE.SYS   , RENAME=$(NEWFILE)
  225. 26 = 7, MUP.SYS     , RENAME=$(NEWFILE)
  226. 27 = 7, MVAUDIO.SYS , RENAME=$(NEWFILE)
  227. 28 = 8, NBF.SYS     , RENAME=$(NEWFILE)
  228. 29 = 8, NBT.SYS     , RENAME=$(NEWFILE)
  229. 30 = 8, NCR77C22.SYS, RENAME=$(NEWFILE)
  230. 31 = 8, NCRC700.SYS , RENAME=$(NEWFILE)
  231. 32 = 8, NCRC710.SYS , RENAME=$(NEWFILE)
  232. 33 = 8, NDIS.SYS    , RENAME=$(NEWFILE)
  233. 34 = 8, NE2000.SYS  , RENAME=$(NEWFILE)
  234. 35 = 8, NE3200.SYS  , RENAME=$(NEWFILE)
  235. 36 = 8, NETFLX.SYS  , RENAME=$(NEWFILE)
  236. 37 = 8, NPEISA.SYS  , RENAME=$(NEWFILE)
  237. 38 = 8, NPFS.SYS    , RENAME=$(NEWFILE)
  238. 39 = 8, NTCX.SYS    , RENAME=$(NEWFILE)
  239. 40 = 8, NTDOS.SYS   , RENAME=$(NEWFILE)
  240. 41 = 8, NTFS.SYS    , RENAME=$(NEWFILE)
  241. 42 = 8, NTXALL.SYS  , RENAME=$(NEWFILE)
  242. 43 = 8, NTXEM.SYS   , RENAME=$(NEWFILE)
  243. 44 = 8, NWLINK.SYS  , RENAME=$(NEWFILE)
  244. 45 = 8, NWNBLINK.SYS, RENAME=$(NEWFILE)
  245. 46 = 8, PARALLEL.SYS, RENAME=$(NEWFILE)
  246. 47 = 8, PINBALL.SYS , RENAME=$(NEWFILE)
  247. 48 = 8, PROTEON.SYS , RENAME=$(NEWFILE)
  248. 49 = 8, RDR.SYS     , RENAME=$(NEWFILE)
  249. 50 = 8, S3.SYS      , RENAME=$(NEWFILE)
  250. 51 = 8, SCSIDISK.SYS, RENAME=$(NEWFILE)
  251. 52 = 8, SCSIPORT.SYS, RENAME=$(NEWFILE)
  252. 53 = 8, SERIAL.SYS  , RENAME=$(NEWFILE)
  253. 54 = 8, SERMOUSE.SYS, RENAME=$(NEWFILE)
  254. 55 = 8, SFMATALK.SYS, RENAME=$(NEWFILE)
  255. 56 = 8, SFMSRV.SYS  , RENAME=$(NEWFILE)
  256. 57 = 8, SRV.SYS     , RENAME=$(NEWFILE)
  257. 58 = 8, STREAMS.SYS , RENAME=$(NEWFILE)
  258. 59 = 9, TCPIP.SYS   , RENAME=$(NEWFILE)
  259. 60 = 9, UBNEI.SYS   , RENAME=$(NEWFILE)
  260. 61 = 9, ULTRA124.SYS, RENAME=$(NEWFILE)
  261. 62 = 9, WDVGA.SYS   , RENAME=$(NEWFILE)
  262.  
  263. [FilesConfig]
  264. ;    1 = 1, file1, RENAME=$(NEWFILE)
  265. ;    2 = 1, file2, RENAME=$(NEWFILE)
  266.  
  267. [FilesWinspool]
  268. ;    1 = 1, file1, RENAME=$(NEWFILE)
  269. ;    2 = 1, file2, RENAME=$(NEWFILE)
  270.  
  271. [FilesPrnDriver]
  272. 1 = 6, HPDSKJET.DLL, RENAME=$(NEWFILE)
  273. 2 = 6, JP350.DLL   , RENAME=$(NEWFILE)
  274. 3 = 9, PSCRIPT.DLL , RENAME=$(NEWFILE)
  275. 4 = 9, PSCRPTUI.DLL, RENAME=$(NEWFILE)
  276.  
  277. [FilesPrnProc]
  278. 1 = 5, WINPRINT.DLL, RENAME=$(NEWFILE)
  279.  
  280. [FilesDbgCom]
  281. ;    1 = 1, file1, RENAME=$(NEWFILE)
  282. ;    2 = 1, file2, RENAME=$(NEWFILE)
  283.  
  284. [FilesDbgCpl]
  285. ;    1 = 1, file1, RENAME=$(NEWFILE)
  286. ;    2 = 1, file2, RENAME=$(NEWFILE)
  287.  
  288. [FilesDbgDll]
  289. ;    1 = 1, file1, RENAME=$(NEWFILE)
  290. ;    2 = 1, file2, RENAME=$(NEWFILE)
  291.  
  292. [FilesDbgDrv]
  293. ;    1 = 1, file1, RENAME=$(NEWFILE)
  294. ;    2 = 1, file2, RENAME=$(NEWFILE)
  295.  
  296. [FilesDbgExe]
  297. ;    1 = 1, file1, RENAME=$(NEWFILE)
  298. ;    2 = 1, file2, RENAME=$(NEWFILE)
  299.  
  300. [FilesDbgScr]
  301. ;    1 = 1, file1, RENAME=$(NEWFILE)
  302. ;    2 = 1, file2, RENAME=$(NEWFILE)
  303.  
  304. [FilesDbgSys]
  305. ;    1 = 1, file1, RENAME=$(NEWFILE)
  306. ;    2 = 1, file2, RENAME=$(NEWFILE)
  307.  
  308. [FilesInfWinnt]
  309. 1 = 6, OEMNADDS.INF, RENAME=$(NEWFILE)
  310. 2 = 5, OEMNADLM.INF, RENAME=$(NEWFILE)
  311. 3 = 7, OEMNADLT.INF, RENAME=$(NEWFILE)
  312. 4 = 7, OEMNSVRA.INF, RENAME=$(NEWFILE)
  313. 5 = 9, OEMNXPSM.INF, RENAME=$(NEWFILE)
  314. 6 = 9, UTILITY.INF , RENAME=$(NEWFILE)
  315.  
  316. [FilesInfLanmanNT]
  317. 1 = 9, OEMNADDS.INF, RENAME=$(NEWFILE)
  318. 2 = 9, OEMNADLM.INF, RENAME=$(NEWFILE)
  319. 3 = 9, OEMNADLT.INF, RENAME=$(NEWFILE)
  320. 4 = 9, OEMNSVRA.INF, RENAME=$(NEWFILE)
  321. 5 = 9, OEMNXPSM.INF, RENAME=$(NEWFILE)
  322. 6 = 9, UTILITY.INF , RENAME=$(NEWFILE)
  323.  
  324. [FilesSystem32CopyAlways]
  325. ;    1 = 1, file1, RENAME=$(NEWFILE)
  326. ;    2 = 1, file2, RENAME=$(NEWFILE)
  327.  
  328. [FilesOs2DllCopyAlways]
  329. 1 = 9, NETAPI.OS2  , RENAME=NETAPI.DLL
  330.  
  331. [FilesDriversCopyAlways]
  332. ;    1 = 1, file1, RENAME=$(NEWFILE)
  333. ;    2 = 1, file2, RENAME=$(NEWFILE)
  334.  
  335.  
  336. [ProcessorID]
  337.     ProcessorID_I386  = I386
  338.     ProcessorID_I486  = I486
  339.     ProcessorID_I586  = I586
  340.     ProcessorID_R4000 = R4000
  341.  
  342. [UiVars]
  343.     STF_PLATFORMDET    = "" ? $(!LIBHANDLE) GetPlatform
  344.     STF_CSDVER         = 768
  345.     STF_BUILDVER       = 528
  346.  
  347.     STF_PRIMARY        = "C:"
  348.     STF_NTDRIVE        = ""
  349.     STF_WINDOWSPATH    = "" ? $(!LIBHANDLE) GetWindowsNtDir
  350.     STF_WINDOWSSYSPATH = "" ? $(!LIBHANDLE) GetWindowsNtSysDir
  351.     STF_CONTROLSET     = CurrentControlSet
  352.     VolumeList         = {} ? $(!LIBHANDLE) GetHardDriveLetters
  353.     VolumeFSList       = {} ? $(!LIBHANDLE) GetHardDriveFileSystems
  354.     VolumeFreeList     = {} ? $(!LIBHANDLE) GetHardDriveFreeSpace
  355.     DisketteList       = {} ? $(!LIBHANDLE) GetFloppyDriveLetters
  356.  
  357.     ;
  358.     ; Amount of free space (in MB) required on the winnt drive
  359.     ; before we'll do the upgrade patch.
  360.     ;
  361. [FreeSpaceI386]
  362.     RequiredFreeWinnt  = 25
  363. [FreeSpaceMips]
  364.     RequiredFreeWinnt  = 32
  365. [FreeSpaceAlpha]
  366.     RequiredFreeWinnt  = 27
  367.  
  368.  
  369. [NVRAMVars]
  370.     SystemPartition = "" ? $(!LIBHANDLE) GetNVRAMVar SYSTEMPARTITION
  371.     OsLoader        = "" ? $(!LIBHANDLE) GetNVRAMVar OSLOADER
  372.     OsLoadPartition = "" ? $(!LIBHANDLE) GetNVRAMVar OSLOADPARTITION
  373.     OsLoadFilename  = "" ? $(!LIBHANDLE) GetNVRAMVar OSLOADFILENAME
  374.  
  375. ;
  376. ; INF LOGIC
  377. ;
  378.  
  379. [Shell Commands]
  380.  
  381.     set-title "Windows NT Setup"
  382.     set-subst CR = "\r"
  383.     set-subst LF = "\n"
  384.     set STF_LANGUAGE = ENG
  385.     read-syms Strings
  386.     shell "subroutn.inf" PushBillboard STATUSDLG $(Billboard1)
  387.     set BillboardPushed = TRUE
  388.  
  389.     set !LIBHANDLE      = ""
  390.     set !PATCHLIBHANDLE = ""
  391.  
  392.     ;
  393.     ; Initialize Library support for the inf
  394.     ;
  395.  
  396.     install   LoadSetupLibrary
  397.  
  398.     ;
  399.     ; find out the essential information about the installed hardware and
  400.     ; software
  401.     ;
  402.  
  403.     read-syms ProductType
  404.     ifstr(i) $(!STF_PLATFORM) == I386
  405.         set STF_PRNPLATFORM = "w32x86"
  406.     else-ifstr(i) $(!STF_PLATFORM) == Mips
  407.         set STF_PRNPLATFORM = "w32mips"
  408.     else-ifstr(i) $(!STF_PLATFORM) == Alpha
  409.         set STF_PRNPLATFORM = "w32alpha"
  410.     endif
  411.  
  412.     read-syms UiVars
  413.     detect    UiVars
  414.     read-syms FreeSpace$(!STF_PLATFORM)
  415.  
  416.     ;
  417.     ; if the Platform is not the same as the one supported by this patch
  418.     ; diskette, inform the user and quit
  419.     ;
  420.     ifstr(i) $(STF_PLATFORM) != $(STF_PLATFORMDET)
  421.          ifstr(i) $(BillboardPushed) == TRUE
  422.              shell "subroutn.inf" PopBillboard
  423.              set BillboardPushed = FALSE
  424.          endif
  425.          shell "subroutn.inf" SetupMessage $(STF_LANGUAGE) "FATAL" $(String1)
  426.          goto patchnotdone
  427.     endif
  428.  
  429.     ;
  430.     ; Check to make sure we have admin privileges, if not print fatal error
  431.     ;
  432.  
  433.     shell "registry.inf" CheckSetupModify
  434.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  435.         ; DEBUG
  436.         ;
  437.         ;shell "subroutn.inf" SetupMessage $(STF_LANGUAGE) "STATUS" "Failed to shell CheckSetupModify"
  438.         ;
  439.         ; DEBUG END
  440.         ifstr(i) $(BillboardPushed) == TRUE
  441.             shell "subroutn.inf" PopBillboard
  442.             set BillboardPushed = FALSE
  443.         endif
  444.  
  445.         Debug-Output "shelling CheckSetupModify failed"
  446.         goto patchnotdone
  447.     else-ifstr(i) $($R0) != STATUS_SUCCESSFUL
  448.         ifstr(i) $(BillboardPushed) == TRUE
  449.             shell "subroutn.inf" PopBillboard
  450.             set BillboardPushed = FALSE
  451.         endif
  452.         shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) "FATAL" $(String4)
  453.         goto patchnotdone
  454.     endif
  455.  
  456.  
  457.     ;
  458.     ; Initialize the patch library support for the inf
  459.     ;
  460.  
  461.     install   LoadPatchLibrary
  462.  
  463.     ;
  464.     ; find out if the system we are patching is checked / free using GetCheckedFree
  465.     ; and fail if we find a checked system.  ignore any errors in getting
  466.     ; checked/free status since this is not important.
  467.     ;
  468.     shell "" GetCheckedFree
  469.     ifint $($ShellCode) == $(!SHELL_CODE_OK)
  470.         ifstr(i) $($R0) == "STATUS_SUCCESSFUL"
  471.             ifstr(i) $($R1) == "checked"
  472.                 shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) "FATAL" $(String15)
  473.                 goto patchnotdone
  474.             endif
  475.         endif
  476.     endif
  477.  
  478.     ;
  479.     ; Get the build and patch version for the system.  If this is more than our patch
  480.     ; version warn the user, allowing him to exit
  481.     ;
  482.  
  483.     LibraryProcedure STATUS,$(!PATCHLIBHANDLE), CheckBuildVersion $(!STF_BUILDVER)
  484.     ifstr(i) $(STATUS) == ERROR
  485.         goto patchnotdone
  486.     else-ifstr(i) $(STATUS) == NO
  487.         shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) WARNING $(String8)
  488.         ifstr(i) $($R1) == "OK"
  489.             goto skip_patchvercheck
  490.         else
  491.             goto patchnotdone
  492.         endif
  493.     endif
  494.  
  495.     shell "" GetCSDVersion
  496.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  497.         ifstr(i) $(BillboardPushed) == TRUE
  498.             shell "subroutn.inf" PopBillboard
  499.             set BillboardPushed = FALSE
  500.         endif
  501.         Debug-Output "PATCH.INF: Shelling GetCSDVersion failed"
  502.         goto patchnotdone
  503.     endif
  504.  
  505.     ifstr(i) $($R0) != "STATUS_SUCCESSFUL"
  506.         Debug-Output "PATCH.INF: GetCSDVersion failed to return a value"
  507.     else
  508.         ifint $($R1) > $(!STF_CSDVER)
  509.             ifstr(i) $(BillboardPushed) == TRUE
  510.                 shell "subroutn.inf" PopBillboard
  511.                 set BillboardPushed = FALSE
  512.             endif
  513.             shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) WARNING $(String8)
  514.             ifstr(i) $($R1) == "OK"
  515.             else
  516.                 goto patchnotdone
  517.             endif
  518.         endif
  519.     endif
  520.  
  521. skip_patchvercheck = +
  522.  
  523.     ;
  524.     ; Get the NT DRIVE
  525.     ;
  526.  
  527.     GetDriveInPath !STF_NTDRIVE $(!STF_WINDOWSSYSPATH)
  528.  
  529.     ;
  530.     ; Check for enough disk space.
  531.     ;
  532.  
  533.     ifint *($(VolumeFreeList), ~($(VolumeList), $(!STF_NTDRIVE))) < $(RequiredFreeWinnt)
  534.         shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) FATAL $(String13a)$(RequiredFreeWinnt)$(String13b)$(!STF_NTDRIVE)$(String13c)
  535.         goto patchnotdone
  536.     endif
  537.  
  538.     ;
  539.     ; get the product type we are running on
  540.     ;
  541.  
  542.     set STF_PRODUCT = ""
  543.     OpenRegKey $(!REG_H_LOCAL) "" "System\CurrentControlSet\Control\ProductOptions" 33554432 KeyProductOption
  544.     ifstr(i) $(KeyProductOption) != ""
  545.         GetRegValue $(KeyProductOption) "ProductType" ProductTypeList
  546.         set TempProductType = *($(ProductTypeList),4)
  547.         ifstr(i) $(TempProductType) == "winnt"
  548.             set !STF_PRODUCT = WINNT
  549.             set !PRODUCT_DIR = WINNT
  550.         else-ifstr(i) $(TempProductType) == "lanmannt"
  551.             set !STF_PRODUCT = LANMANNT
  552.             set !PRODUCT_DIR = NTAS
  553.         endif
  554.         CloseRegKey $(KeyProductOptions)
  555.     endif
  556.  
  557.     ;
  558.     ; if we are unable to determine the product type print error and exit
  559.     ;
  560.  
  561.     ifstr(i) $(STF_PRODUCT) == ""
  562.         shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) FATAL $(String14)
  563.         goto patchnotdone
  564.     endif
  565.  
  566.     ;
  567.     ; Find the hal and osloader destination on Mips and Alpha
  568.     ;
  569.  
  570.     ifstr(i) $(!STF_PLATFORM) == I386
  571.         set STF_HALDEST = $(!STF_WINDOWSSYSPATH)
  572.         set STF_OSLDEST = C:\
  573.  
  574.     else
  575.  
  576.         read-syms NVRAMVars
  577.         detect    NVRAMVars
  578.         LibraryProcedure STATUS,$(!PATCHLIBHANDLE), GetOsLoaderDest         +
  579.                                                          $(SystemPartition) +
  580.                                                          $(OsLoader)        +
  581.                                                          $(OsLoadPartition) +
  582.                                                          $(OsLoadFilename)
  583.         ifstr(i) $(STATUS) == ERROR
  584.             goto patchnotdone
  585.         else
  586.             set STF_OSLDEST = $(STATUS)
  587.             set STF_HALDEST = $(STATUS)
  588.         endif
  589.     endif
  590.  
  591.     ;
  592.     ; Get the required information about keyed files
  593.     ;
  594.  
  595.     set KeyedClassKeys  = ^(FileKeyedClasses, 0)
  596.     set KeyedClassFiles = ^(FileKeyedClasses, 1)
  597.  
  598.     LibraryProcedure STATUS,$(!PATCHLIBHANDLE), GetFileTypes $(KeyedClassFiles)
  599.     ifstr(i) $(STATUS) == ERROR
  600.         goto patchnotdone
  601.     else-ifstr(i) $(STATUS) == SETUPLOGNOTPRESENT
  602.         shell "subroutn.inf" SetupMessage $(!STF_LANGUAGE) FATAL $(String11)
  603.         goto patchnotdone
  604.     else
  605.         ForListDo $(KeyedClassKeys)
  606.             set $($)Type = *($(STATUS), $(#))
  607.         EndForListDo
  608.     endif
  609.  
  610.     ;
  611.     ; Warn the user about the patch process..
  612.     ;
  613.  
  614.     ifstr(i) $(BillboardPushed) == TRUE
  615.         shell "subroutn.inf" PopBillboard
  616.         set BillboardPushed = FALSE
  617.     endif
  618.  
  619.     shell "" QueryOkCancel $(String9)
  620.     ifstr(i) $($R1) == "OK"
  621.     else
  622.         set String = $(String12)
  623.         goto finish2
  624.     endif
  625.  
  626.     shell "subroutn.inf" PushBillboard STATUSDLG $(Billboard2)
  627.     set BillboardPushed = TRUE
  628.  
  629.     ;
  630.     ; initialize copy
  631.     ;
  632.  
  633.     set MoveFileExList  = {}
  634.  
  635.  
  636.     ;
  637.     ; Run through the directory list adding files to the copy list
  638.     ;
  639.  
  640.     read-syms FileSections
  641.     set FileSectionsList = ^(FileSections, 0)
  642.     set FileSource  = $(!STF_SRCDIR)
  643.  
  644.     ForListDo $(FileSectionsList)
  645.         set FileSection = $($)
  646.         set FileDest    = $($($))
  647.         set FileList    = ^($(FileSection), 0)
  648.         ForListDo $(FileList)
  649.             set FileKey = $($)
  650.             set File    = #($(FileSection), $(FileKey), 2)
  651.             set FileDestFullPath = $(FileDest)\$(File)
  652.  
  653.             ;
  654.             ; Check to see if file exists, if it is does not exist, it doesn't
  655.             ; need to be copied over
  656.  
  657.             LibraryProcedure STATUS,$(!LIBHANDLE),CheckFileExistance $(FileDestFullPath)
  658.             ifstr(i) $(STATUS) == YES
  659.  
  660.  
  661.                 ; DEBUG
  662.                 ;
  663.                 ;shell "subroutn.inf" SetupMessage $(STF_LANGUAGE) "STATUS" "Examining to see if file opened excl: "$(FileDestFullPath)
  664.                 ;
  665.                 ; DEBUG END
  666.  
  667.                 LibraryProcedure STATUS, $(!PATCHLIBHANDLE), IsFileOpenedExclusive $(FileDestFullPath)
  668.                 ifstr(i) $(STATUS) == ERROR
  669.                     goto patchnotdone
  670.                 else
  671.                     ifstr(i) $(STATUS) == "YES"
  672.                         LibraryProcedure NEWFILE, $(!PATCHLIBHANDLE), GenerateTemporary $(FileDest)
  673.                         ifstr(i) $(NEWFILE) == ERROR
  674.                             goto patchnotdone
  675.                         else
  676.                             set FileComp = {$(FileDest)\$(NEWFILE), $(FileDestFullPath)}
  677.  
  678.                             ; DEBUG
  679.                             ;
  680.                             ;shell "subroutn.inf" SetupMessage $(STF_LANGUAGE) "STATUS" "Adding to movefile ex list: "$(FileComp)
  681.                             ;
  682.                             ; DEBUG END
  683.  
  684.                             set MoveFileExList = >($(MoveFileExList), $(FileComp))
  685.                         endif
  686.                     else
  687.                         set NEWFILE = $(File)
  688.                     endif
  689.  
  690.                     ; DEBUG
  691.                     ;
  692.                     ;shell "subroutn.inf" SetupMessage $(STF_LANGUAGE) "STATUS" "Copying File Section: "$(FileSection)" : Key: "$(FileKey)" Source: "$(FileSource)" Dest: "$(FileDest)" rename = "$(NEWFILE)
  693.                     ;
  694.                     ; DEBUG END
  695.  
  696.                     install Install-File
  697.  
  698.                 endif
  699.             endif
  700.         EndForListDo
  701.     EndForListDO
  702.  
  703.     ;
  704.     ; Add the keyed sections to the copy list
  705.     ;
  706.  
  707.     read-syms FilesKeyedSections
  708.     set FileSource  = $(!STF_SRCDIR)
  709.     ForListDo $(KeyedClassKeys)
  710.         set FileSection = Files$($)
  711.         set FileDest    = $($(FileSection))
  712.         set FileKey     = $($($)Type)
  713.  
  714.         set KeyedClassChoices = ^(Files$($), 0)
  715.         ifcontains(i) $(FileKey) in $(KeyedClassChoices)
  716.             set File             = #(FileKeyedClasses, $($), 1)
  717.             set FileDestFullPath = $(FileDest)\$(File)
  718.             ;
  719.             ; Check to see if file exists, if it is does not exist, it doesn't
  720.             ; need to be copied over
  721.  
  722.             LibraryProcedure STATUS,$(!LIBHANDLE),CheckFileExistance $(FileDestFullPath)
  723.             ifstr(i) $(STATUS) == YES
  724.  
  725.  
  726.                 ; DEBUG
  727.                 ;
  728.                 ;shell "subroutn.inf" SetupMessage $(STF_LANGUAGE) "STATUS" "Examining to see if file opened excl: "$(FileDestFullPath)
  729.                 ;
  730.                 ; DEBUG END
  731.  
  732.                 LibraryProcedure STATUS, $(!PATCHLIBHANDLE), IsFileOpenedExclusive $(FileDestFullPath)
  733.                 ifstr(i) $(STATUS) == ERROR
  734.                     goto patchnotdone
  735.                 else
  736.                     ifstr(i) $(STATUS) == "YES"
  737.                         LibraryProcedure NEWFILE, $(!PATCHLIBHANDLE), GenerateTemporary $(FileDest)
  738.                         ifstr(i) $(NEWFILE) == ERROR
  739.                             goto patchnotdone
  740.                         else
  741.                             set FileComp = {$(FileDest)\$(NEWFILE), $(FileDestFullPath)}
  742.  
  743.                             ; DEBUG
  744.                             ;
  745.                             ;shell "subroutn.inf" SetupMessage $(STF_LANGUAGE) "STATUS" "Adding to movefile ex list: "$(FileComp)
  746.                             ;
  747.                             ; DEBUG END
  748.  
  749.                             set MoveFileExList = >($(MoveFileExList), $(FileComp))
  750.                         endif
  751.                     else
  752.                         set NEWFILE = $(File)
  753.                     endif
  754.  
  755.                     ; DEBUG
  756.                     ;
  757.                     ;shell "subroutn.inf" SetupMessage $(STF_LANGUAGE) "STATUS" "Copying File Section: "$(FileSection)" : Key: "$(FileKey)" Source: "$(FileSource)" Dest: "$(FileDest)" rename = "$(NEWFILE)
  758.                     ;
  759.                     ; DEBUG END
  760.  
  761.                     install Install-File
  762.  
  763.                 endif
  764.             endif
  765.  
  766.  
  767.  
  768.         endif
  769.     EndForListDo
  770.  
  771.     ;
  772.     ; add product specific files to the copy list
  773.     ;
  774.  
  775.     read-syms FileSections$(STF_PRODUCT)
  776.     set FileSectionsList = ^(FileSections$(STF_PRODUCT), 0)
  777.     set FileSource  = $(!STF_SRCDIR)$(PRODUCT_DIR)
  778.     ForListDo $(FileSectionsList)
  779.         set FileSection = $($)
  780.         set FileDest    = $($($))
  781.         set FileList    = ^($(FileSection), 0)
  782.         ForListDo $(FileList)
  783.             set FileKey = $($)
  784.             set File    = #($(FileSection), $(FileKey), 2)
  785.             set FileDestFullPath = $(FileDest)\$(File)
  786.  
  787.             ;
  788.             ; Check to see if file exists, if it is does not exist, it doesn't
  789.             ; need to be copied over
  790.  
  791.             LibraryProcedure STATUS,$(!LIBHANDLE),CheckFileExistance $(FileDestFullPath)
  792.             ifstr(i) $(STATUS) == YES
  793.  
  794.  
  795.                 ; DEBUG
  796.                 ;
  797.                 ;shell "subroutn.inf" SetupMessage $(STF_LANGUAGE) "STATUS" "Examining to see if file opened excl: "$(FileDestFullPath)
  798.                 ;
  799.                 ; DEBUG END
  800.  
  801.                 LibraryProcedure STATUS, $(!PATCHLIBHANDLE), IsFileOpenedExclusive $(FileDestFullPath)
  802.                 ifstr(i) $(STATUS) == ERROR
  803.                     goto patchnotdone
  804.                 else
  805.                     ifstr(i) $(STATUS) == "YES"
  806.                         LibraryProcedure NEWFILE, $(!PATCHLIBHANDLE), GenerateTemporary $(FileDest)
  807.                         ifstr(i) $(NEWFILE) == ERROR
  808.                             goto patchnotdone
  809.                         else
  810.                             set FileComp = {$(FileDest)\$(NEWFILE), $(FileDestFullPath)}
  811.  
  812.                             ; DEBUG
  813.                             ;
  814.                             ;shell "subroutn.inf" SetupMessage $(STF_LANGUAGE) "STATUS" "Adding to movefile ex list: "$(FileComp)
  815.                             ;
  816.                             ; DEBUG END
  817.  
  818.                             set MoveFileExList = >($(MoveFileExList), $(FileComp))
  819.                         endif
  820.                     else
  821.                         set NEWFILE = $(File)
  822.                     endif
  823.  
  824.                     ; DEBUG
  825.                     ;
  826.                     ;shell "subroutn.inf" SetupMessage $(STF_LANGUAGE) "STATUS" "Copying File Section: "$(FileSection)" : Key: "$(FileKey)" Source: "$(FileSource)" Dest: "$(FileDest)" rename = "$(NEWFILE)
  827.                     ;
  828.                     ; DEBUG END
  829.  
  830.                     install Install-File
  831.  
  832.                 endif
  833.             endif
  834.         EndForListDo
  835.     EndForListDO
  836.  
  837.  
  838.     ifstr(i) $(BillboardPushed) == TRUE
  839.         shell "subroutn.inf" PopBillboard
  840.         set BillboardPushed = FALSE
  841.     endif
  842.  
  843.     ;
  844.     ; add the files which are always copied
  845.     ;
  846.     read-syms FileSectionsCopyAlways
  847.     set FileSectionsList = ^(FileSectionsCopyAlways, 0)
  848.     set FileSource  = $(!STF_SRCDIR)
  849.  
  850.     ForListDo $(FileSectionsList)
  851.         set FileSection = $($)
  852.         set FileDest    = $($($))
  853.         set FileList    = ^($(FileSection), 0)
  854.         ForListDo $(FileList)
  855.             set FileKey = $($)
  856.             set File    = #($(FileSection), $(FileKey), 2)
  857.             set NEWFILE = $(File)
  858.             set FileDestFullPath = $(FileDest)\$(File)
  859.             install Install-File
  860.         EndForListDo
  861.     EndForListDO
  862.  
  863.     ;
  864.     ; Do the copy
  865.     ;
  866.  
  867.     read-syms ProgressCopy$(!STF_LANGUAGE)
  868.     install   Install-DoCopy
  869.     ifstr(i) $(STF_INSTALL_OUTCOME) == "STF_USERQUIT"
  870.         goto patchnotdone
  871.     else-ifstr(i) $(STF_INSTALL_OUTCOME) == "STF_FAILURE"
  872.         goto patchnotdone
  873.     endif
  874.  
  875. processmovefileex=+
  876.     ;
  877.     ; Process MoveFileExList
  878.     ;
  879.  
  880.     ForListDo $(MoveFileExList)
  881.         ;
  882.         set ExistingPath = *($($), 1)
  883.         set NewPath      = *($($), 2)
  884.  
  885.         ; DEBUG
  886.         ;
  887.         ;shell "subroutn.inf" SetupMessage $(STF_LANGUAGE) "STATUS" "CopyFileOnReboot "$(ExistingPath)" to "$(NewPath)
  888.         ;
  889.         ; DEBUG END
  890.  
  891.         LibraryProcedure STATUS, $(!PATCHLIBHANDLE), CopyFileOnReboot $(ExistingPath) $(NewPath)
  892.         ifstr(i) $(STATUS) == ERROR
  893.             goto patchnotdone
  894.         endif
  895.     EndForListDo
  896.  
  897.  
  898. patchdone =+
  899.     ifstr(i) $(BillboardPushed) == TRUE
  900.         shell "subroutn.inf" PopBillboard
  901.         set BillboardPushed = FALSE
  902.     endif
  903.  
  904.     ;
  905.     ; do the registry modifications needed
  906.     ;
  907.  
  908.     shell "" DoRegistryModifications $(!STF_CSDVER)
  909.     read-syms SetupDoneDlg$(!STF_LANGUAGE)
  910.     ui start "SetupDone"
  911.     ifstr(i) $(DLGEVENT) == "CONTINUE"
  912.         ui pop 1
  913.         goto rebootend
  914.     else
  915.         ui pop 1
  916.         goto finish1
  917.     endif
  918.  
  919. patchnotdone =+
  920.     set String = $(String2)
  921. finish2 =+
  922.     ifstr(i) $(BillboardPushed) == TRUE
  923.         shell "subroutn.inf" PopBillboard
  924.         set BillboardPushed = FALSE
  925.     endif
  926.  
  927.     shell "subroutn.inf" SetupMessage $(STF_LANGUAGE) "FATAL" $(String)
  928.     goto finish1
  929.  
  930. finish1 =+
  931.     ;
  932.     ; Free the library support
  933.     ;
  934.  
  935.     install   FreeSetupLibrary
  936.  
  937. finish =+
  938.  
  939.     install   FreePatchLibrary
  940.     exit
  941.  
  942. rebootend =+
  943.     set Reboot = YES
  944.     install   Install-Shutdown
  945.     goto finish1
  946.     exit
  947.  
  948.  
  949. ;-----------------------------------------------------------------------
  950. ; INSTALL HELPERS
  951. ;-----------------------------------------------------------------------
  952.  
  953. [LoadPatchLibrary]
  954.     LoadLibrary "x" patchdll.dll !PATCHLIBHANDLE
  955.     exit
  956.  
  957. [FreePatchLibrary]
  958.     ifstr(i) $(!PATCHLIBHANDLE) != ""
  959.         FreeLibrary $(!PATCHLIBHANDLE)
  960.     endif
  961.     exit
  962.  
  963. [LoadSetupLibrary]
  964.     LoadLibrary "x" $(!STF_CWDDIR)setupdll.dll !LIBHANDLE
  965.     exit
  966.  
  967. [FreeSetupLibrary]
  968.     ifstr(i) $(!LIBHANDLE) != ""
  969.         FreeLibrary $(!LIBHANDLE)
  970.     endif
  971.     exit
  972.  
  973. [Install-File]
  974.     set STF_VITAL = ""
  975.     AddSectionKeyFileToCopyList $(FileSection) $(FileKey) $(FileSource) $(FileDest)
  976.     exit
  977.  
  978. [Install-DoCopy]
  979.     CopyFilesInCopyList
  980.     exit
  981.  
  982.  
  983. [Install-Shutdown]
  984.     ;
  985.     LibraryProcedure STATUS,$(!LIBHANDLE),ShutdownSystem $(Reboot)
  986.     exit
  987.  
  988. ;-----------------------------------------------------------------------
  989. ; REGISTRY SUBROUTINES
  990. ;-----------------------------------------------------------------------
  991.  
  992. [RegistryConstants]
  993.  
  994.     MaskAllAccess          = 33554432
  995.     NoTitle                = 0
  996.     RegLastError           = $(!REG_ERROR_SUCCESS)
  997.  
  998. ;-----------------------------------------------------------------------
  999. ; ROUTINE:      DoRegistryModifications
  1000. ;
  1001. ; DESCRIPTION:  Does the registry modifications needed.
  1002. ;               - Sets the compatibility flags for the postcript stuff
  1003. ;               - Creates an entry for the WinNT software.
  1004. ;
  1005. ; INPUTS:       $0:  CSD Version #
  1006. ;
  1007. ; OUTPUTS:      $R0: Status: STATUS_SUCCESSFUL
  1008. ;                            STATUS_FAILED
  1009. ;
  1010. ;------------------------------------------------------------------------
  1011.  
  1012. [DoRegistryModifications]
  1013.  
  1014.     set Status = STATUS_FAILED
  1015.     read-syms RegistryConstants
  1016.  
  1017.     ;
  1018.     ; Modify the compatibility flags..
  1019.     ;
  1020.     set KeyPath   = { +
  1021.                      {SOFTWARE,       $(NoTitle), $(MaskAllAccess)}, +
  1022.                      {Microsoft,      $(NoTitle), $(MaskAllAccess)}, +
  1023.                      {"Windows NT",   $(NoTitle), $(MaskAllAccess)}, +
  1024.                      {CurrentVersion, $(NoTitle), $(MaskAllAccess)}, +
  1025.                      {WOW,            $(NoTitle), $(MaskAllAccess)}, +
  1026.                      {Compatibility,  $(NoTitle), $(MaskAllAccess)}  +
  1027.                     }
  1028.  
  1029.     ;
  1030.     ; Form the value info structures for the WinNT entry
  1031.     ;
  1032.  
  1033.     set KeyValues = { +
  1034.                      {PM4,  $(NoTitle), $(!REG_VT_SZ), "0x02004000" }, +
  1035.                      {main123W, $(NoTitle), $(!REG_VT_SZ), "0x00004000" }, +
  1036.                      {FH3, $(NoTitle), $(!REG_VT_SZ), "0x00004000" }  +
  1037.                     }
  1038.  
  1039.  
  1040.     shell "registry.inf" CreateKey $(!REG_H_LOCAL) $(KeyPath) $(KeyValues)
  1041.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  1042.         goto endCSDVersionCreate
  1043.     endif
  1044.     ifstr(i) $($R0) != STATUS_SUCCESSFUL
  1045.         goto endCSDVersionCreate
  1046.     else
  1047.         CloseRegKey $($R1)
  1048.     endif
  1049.     ;
  1050.     ; Form the path up to the version key
  1051.     ;
  1052.  
  1053.     set KeyPath   = { +
  1054.                      {SOFTWARE,       $(NoTitle), $(MaskAllAccess)}, +
  1055.                      {Microsoft,      $(NoTitle), $(MaskAllAccess)}, +
  1056.                      {"Windows NT",   $(NoTitle), $(MaskAllAccess)}, +
  1057.                      {CurrentVersion, $(NoTitle), $(MaskAllAccess)}  +
  1058.                     }
  1059.  
  1060.     ;
  1061.     ; Form the value info structures for the WinNT entry
  1062.     ;
  1063.  
  1064.     set KeyValues = { +
  1065.                      {CSDVersion, $(NoTitle), $(!REG_VT_DWORD), $($0) } +
  1066.                     }
  1067.  
  1068.  
  1069.     shell "registry.inf" CreateKey $(!REG_H_LOCAL) $(KeyPath) $(KeyValues)
  1070.     ifint $($ShellCode) != $(!SHELL_CODE_OK)
  1071.         goto endCSDVersionCreate
  1072.     endif
  1073.     ifstr(i) $($R0) != STATUS_SUCCESSFUL
  1074.         goto endCSDVersionCreate
  1075.     else
  1076.         CloseRegKey $($R1)
  1077.     endif
  1078.  
  1079.     set Status = STATUS_SUCCESSFUL
  1080. endCSDVersionCreate = +
  1081.     Return $(Status)
  1082.  
  1083.  
  1084.  
  1085.  
  1086. ;-----------------------------------------------------------------------
  1087. ; ROUTINE:      GetCSDVersion
  1088. ;
  1089. ; DESCRIPTION:  Reads the software entry to find out what the CSD Patch Version
  1090. ;               is
  1091. ;
  1092. ; INPUTS:       $0:  None
  1093. ;
  1094. ; OUTPUTS:      $R0: Status: STATUS_SUCCESSFUL
  1095. ;                            STATUS_FAILED
  1096. ;
  1097. ;               $R1: CSDVersion
  1098. ;
  1099. ;------------------------------------------------------------------------
  1100.  
  1101. [GetCSDVersion]
  1102.  
  1103.     set Status = STATUS_SUCCESSFUL
  1104.     read-syms RegistryConstants
  1105.     set CSDVersion = 0
  1106.  
  1107.     ;
  1108.     ; Open the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion
  1109.     ; key
  1110.  
  1111.     set KeyName = "Software\Microsoft\Windows NT\CurrentVersion"
  1112.     OpenRegKey $(!REG_H_LOCAL) "" $(KeyName) $(!REG_KEY_READ) KeyHandle
  1113.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  1114.         Debug-Output "REGISTRY.INF: Couldn't open windows nt software key for read access"
  1115.         goto end_GetCSDVersion
  1116.     endif
  1117.  
  1118.     ;
  1119.     ; read the csdversion entry
  1120.     ;
  1121.  
  1122.     GetRegValue $(KeyHandle) "CSDVersion" CSDVersionValue
  1123.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  1124.         CloseRegKey $(KeyHandle)
  1125.         goto end_GetCSDVersion
  1126.     endif
  1127.  
  1128.     set CSDVersion =  *($(CSDVersionValue), 4)
  1129.     CloseRegKey $(KeyHandle)
  1130. end_GetCSDVersion = +
  1131.     Return $(Status) $(CSDVersion)
  1132.  
  1133.  
  1134. ;-----------------------------------------------------------------------
  1135. ; ROUTINE:      GetCheckedFree
  1136. ;
  1137. ; DESCRIPTION:  Reads the software entry to find out whether the system
  1138. ;               is checked / free.
  1139. ;
  1140. ; INPUTS:       $0:  None
  1141. ;
  1142. ; OUTPUTS:      $R0: Status: STATUS_SUCCESSFUL
  1143. ;                            STATUS_FAILED
  1144. ;
  1145. ;               $R1: Checked | Free
  1146. ;
  1147. ;------------------------------------------------------------------------
  1148.  
  1149. [GetCheckedFree]
  1150.  
  1151.     set Status = STATUS_SUCCESSFUL
  1152.     read-syms RegistryConstants
  1153.     set System = Free
  1154.  
  1155.     ;
  1156.     ; Open the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion
  1157.     ; key
  1158.  
  1159.     set KeyName = "Software\Microsoft\Windows NT\CurrentVersion"
  1160.     OpenRegKey $(!REG_H_LOCAL) "" $(KeyName) $(!REG_KEY_READ) KeyHandle
  1161.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  1162.         Debug-Output "REGISTRY.INF: Couldn't open windows nt software key for read access"
  1163.         goto end_GetCheckedFree
  1164.     endif
  1165.  
  1166.     ;
  1167.     ; read the currenttype value
  1168.     ;
  1169.  
  1170.     GetRegValue $(KeyHandle) "CurrentType" CurrentTypeValue
  1171.     ifint $(RegLastError) != $(!REG_ERROR_SUCCESS)
  1172.         CloseRegKey $(KeyHandle)
  1173.         goto end_GetCheckedFree
  1174.     endif
  1175.  
  1176.     ;
  1177.     ; split the currenttype value and see if the split string has "free" or
  1178.     ; "checked" in it
  1179.     ;
  1180.  
  1181.     Split-String *($(CurrentTypeValue), 4) " " CurrentTypeList
  1182.     ForListDo $(CurrentTypeList)
  1183.        ifstr(i) $($) == "free"
  1184.           set System = free
  1185.        else-ifstr(i) $($) == "checked"
  1186.           set System = checked
  1187.        endif
  1188.     EndForListDo
  1189.  
  1190.     CloseRegKey $(KeyHandle)
  1191. end_GetCheckedFree = +
  1192.     Return $(Status) $(System)
  1193.  
  1194.  
  1195. ;-----------------------------------------------------------------------
  1196. ; ROUTINE:      QueryOkCancel
  1197. ;
  1198. ; DESCRIPTION:  This routine lets the user query OK / Cancel giving OK as
  1199. ;               default
  1200. ;
  1201. ; INPUTS:       $0:  MessageText.
  1202. ;
  1203. ; OUTPUTS:      $R0: STATUS:   STATUS_SUCCESSFUL |
  1204. ;                              STATUS_NOLANGUAGE
  1205. ;                              STATUS_FAILED
  1206. ;
  1207. ;               $R1: DLGEVENT: OK | CANCEL
  1208. ;
  1209. ;------------------------------------------------------------------------
  1210.  
  1211. [QueryOkCancel]
  1212.  
  1213.     set DlgText = $($0)
  1214.     read-syms QueryOKCancelDlg$(!STF_LANGUAGE)
  1215.  
  1216.     ui start "SetupMessage"
  1217.     ifstr(i) $(DLGEVENT) == "OK"
  1218.         set Status     = STATUS_SUCCESSFUL
  1219.         set UserAction = $(DLGEVENT)
  1220.  
  1221.     else-ifstr(i) $(DLGEVENT) == "CANCEL"
  1222.         set Status     = STATUS_SUCCESSFUL
  1223.         set UserAction = $(DLGEVENT)
  1224.     else
  1225.         set Status     = STATUS_FAILED
  1226.         set UserAction = "CANCEL"
  1227.     endif
  1228.     Return $(Status) $(UserAction)
  1229.  
  1230. [ProductType]
  1231. STF_PRODUCT  = Winnt
  1232. STF_PLATFORM = I386
  1233.  
  1234. ;
  1235. ; MEDIA AND FILE DESCRIPTIONS
  1236. ;
  1237.  
  1238. [Source Media Descriptions]
  1239.     1  = "Windows NT 3.1 Update Disk #1"  , TAGFILE = disk1
  1240.     2  = "Windows NT 3.1 Update Disk #2"  , TAGFILE = disk2
  1241.     3  = "Windows NT 3.1 Update Disk #3"  , TAGFILE = disk3
  1242.     4  = "Windows NT 3.1 Update Disk #4"  , TAGFILE = disk4
  1243.     5  = "Windows NT 3.1 Update Disk #5"  , TAGFILE = disk5
  1244.     6  = "Windows NT 3.1 Update Disk #6"  , TAGFILE = disk6
  1245.     7  = "Windows NT 3.1 Update Disk #7"  , TAGFILE = disk7
  1246.     8  = "Windows NT 3.1 Update Disk #8"  , TAGFILE = disk8
  1247.     9  = "Windows NT 3.1 Update Disk #9"  , TAGFILE = disk9
  1248.     10 = "Windows NT 3.1 Update Disk #10" , TAGFILE = disk10
  1249.  
  1250. [Strings]
  1251.  
  1252.  
  1253.     String1 = "This update disk cannot be used on this platform."
  1254.     String2 = "Setup failed to update the system."
  1255.     String3 = "Setup has successfully updated your system."
  1256.     String4 = "You do not have permission to update the system.  Please contact your system administrator."
  1257.     String5 = "Setup failed to setup your updated files for secure operation."
  1258.     String6 = "No floppy disk drive was found on your computer. "+
  1259.               "Setup cannot modify the Emergency Repair Disk."
  1260.  
  1261.     String7 =  "If you created an Emergency Repair Disk during the initial installation"+
  1262.                " of Windows NT, please insert it into Drive "
  1263.  
  1264.     String10 = " and click OK to update the repair disk.  If you cannot locate the repair"+
  1265.                " disk, select Cancel and Setup will complete the installation."
  1266.  
  1267.     String8 = "Setup has detected that the version of the system installed is "+
  1268.               "newer than the update you are applying to it.  The update can render "+
  1269.               "your system unstartable.  Press OK if you still wish to continue "+
  1270.               "or press Cancel to exit Setup."
  1271.  
  1272.     ; PLEASE NOTE:
  1273.     ; Change the language mentioned in variable String9 to the language
  1274.     ; you are localizing to.  That is if the localized language is Spanish,
  1275.     ; the word English should be changed to Espanol (?).
  1276.     ;
  1277.  
  1278.     String9 = "Setup is going to update your Windows NT system with the English "+
  1279.               "version of the update program.  If you wish to cancel the update "+
  1280.               "process, please press Cancel or press OK to continue."
  1281.  
  1282.     String11 = "Setup couldn't find the setup.log file in your windows directory. "+
  1283.                "Setup cannot proceed to update your system.  Please copy the repair.inf "+
  1284.                "file from your Emergency Repair Disk to your windows directory under the "+
  1285.                "name setup.log and restart the update."
  1286.     String12 = "Setup has not updated your system.  If you wish to update your "+
  1287.                "system please run the update utility again."
  1288.  
  1289.     String13a = "Not enough hard disk space to run Setup.  Setup needs at least "
  1290.     String13b = "MB of free hard disk space on "
  1291.     String13c = " before it can be run.  Delete some"+
  1292.                 " files and run the Update program again."
  1293.  
  1294.     String14  = "Setup cannot update your Windows NT files because it could not "+
  1295.                 "determine your product type.  Your registry may be corrupt."
  1296.  
  1297.     String15  = "Setup cannot update your checked system.  The update can only "+
  1298.                 "be applied to the retail system."
  1299.  
  1300.     Billboard1 = "Please wait..."
  1301.     Billboard2 = "Please wait while the files to be updated are determined..."
  1302.     Billboard3 = "Please wait while the Emergency Repair Disk is updated..."
  1303.  
  1304. [ProgressCopyENG]
  1305.     ProCaption   = "Windows NT Setup"
  1306.     ProCancel    = "Cancel"
  1307.     ProCancelMsg = "The Windows NT 3.1 files are not completely updated.  Are you sure you want "+
  1308.                    "to cancel copying files?"
  1309.     ProCancelCap = "Setup Message"
  1310.     ProText1     = "Copying:"
  1311.     ProText2     = "To:"
  1312.  
  1313.  
  1314. [SetupDoneDlgENG]
  1315.     Caption     = "Windows NT Setup"
  1316.     DlgText     = "Windows NT 3.1 has been updated. If you change or add "+
  1317.                   "any components to your system, you will need to "+
  1318.                   "reapply the update."$(!LF)$(!LF)+
  1319.                   "Remove disks from the floppy disk drives and "+
  1320.                   "choose Restart Computer to run the updated system."
  1321.  
  1322.     Reboot      = "&Restart Computer"
  1323.     Windows     = "E&xit to Windows NT"
  1324.     DlgType     = "Info"
  1325.     DlgTemplate = "REBOOT"
  1326.  
  1327. [QueryOKCancelDlgENG]
  1328.     STF_MB_TITLE = "Setup Message"
  1329.  
  1330.     ;no translation needed after this
  1331.  
  1332.     DlgType      = "MessageBox"
  1333.     STF_MB_TEXT  = $(DlgText)
  1334.     STF_MB_TYPE  = 2
  1335.     STF_MB_ICON  = 4
  1336.     STF_MB_DEF   = 1
  1337.